Engineers use compression (also called source coding or source encoding) to reduce the bit rate of digital video. Compression decreases the cost of storing and transmitting video information by converting the information into a lower bit rate form. Decompression (also called decoding) reconstructs a version of the original information from the compressed form. A “codec” is an encoder/decoder system.
Over the last two decades, various video codec standards have been adopted, including the ITU-T H.261, H.262 (MPEG-2 or ISO/IEC 13818-2), H.263, and H.264 (MPEG-4 AVC or ISO/IEC 14496-10) standards; the MPEG-1 (ISO/IEC 11172-2) and MPEG-4 Visual (ISO/IEC 14496-2) standards; and the SMPTE 421M (VC-1) standard. More recently, the HEVC standard (ITU-T H.265 or ISO/IEC 23008-2) has been approved. A video codec standard typically defines options for the syntax of an encoded video bitstream, detailing parameters in the bitstream when particular features are used in encoding and decoding. In many cases, a video codec standard also provides details about the decoding operations a decoder should perform to achieve conforming results in decoding.
In practice, however, decoders often perform in sub-optimal fashion. For example, in many common scenarios and for many common application, decoder implementations: (1) include dedicated resources that are unnecessary (e.g., memory, such as GPU and/or CPU system memory, that is never used); (2) underutilize or fail to use faster decoding resources (e.g., dedicated or customized hardware decoding resources); and/or or (3) include needless but time-consuming operations (e.g., needless searches for start codes, NALU offsets, picture boundaries, access unit boundaries, and the like).
Embodiments of the disclosed technology are directed to improving decoder performance in view of these shortcomings.